package com.ktg.mes.pro.service;

import java.util.List;

import com.ktg.mes.pro.domain.ProTask;
import com.ktg.mes.pro.domain.ProWaring;
import com.ktg.mes.pro.domain.ProWorkorder;
import com.ktg.mes.util.LService;
import org.apache.ibatis.annotations.Param;

/**
 * 生产工单Service接口
 *
 * @author yinjinlu
 * @date 2022-05-09
 */
public interface IProWorkorderService extends LService<ProWorkorder>
{
    /**
     * 查询生产工单
     *
     * @param workorderId 生产工单主键
     * @return 生产工单
     */
    public ProWorkorder selectProWorkorderByWorkorderId(Long workorderId);

    /**
     * 查询生产工单列表
     *
     * @param proWorkorder 生产工单
     * @return 生产工单集合
     */
    public List<ProWorkorder> selectProWorkorderList(ProWorkorder proWorkorder);


    public String checkWorkorderCodeUnique(ProWorkorder proWorkorder);

    /**
     * 新增生产工单
     *
     * @param proWorkorder 生产工单
     * @return 结果
     */
    public int insertProWorkorder(ProWorkorder proWorkorder);

    /**
     * 修改生产工单
     *
     * @param proWorkorder 生产工单
     * @return 结果
     */
    public int updateProWorkorder(ProWorkorder proWorkorder);

    /**
     * 批量删除生产工单
     *
     * @param workorderIds 需要删除的生产工单主键集合
     * @return 结果
     */
    public int deleteProWorkorderByWorkorderIds(Long[] workorderIds);

    /**
     * 删除生产工单信息
     *
     * @param workorderId 生产工单主键
     * @return 结果
     */
    public int deleteProWorkorderByWorkorderId(Long workorderId);


    List<ProWorkorder> selectProWorkorderTableList(ProWorkorder proWorkorder);

    /**
     * 修改生产工单状态
     * @param proWorkorder
     */
    int updateWorkorderState(ProWorkorder proWorkorder);

    // 查询产品粘度
    ProWorkorder selectProWorkorderViscosity(Long workorderId);

    List<ProWorkorder> TreeResul();

    /**
     * 修改排产之后，变更工单xinx
     * @param task
     */
    public boolean setStatusAfterTaskChange(ProTask task);

    /** 查询流水号 */
    List<ProWorkorder> selectSerialNumberList();

    /**
     * 更新排产任务对应的生产工单
     */
    public void updateStatusFromTaskId(@Param("taskIds") List<Long> taskIds);
}
